import 'package:base_lib/common/index.dart';
import 'package:flutter/material.dart';

Set _dict = Set();
bool loadingStatus = false;

class LoadingDialog {
  static BuildContext ctx;

  static init(BuildContext context) {
    ctx = context;
  }

  static void before(uri, {String text = '加载中'}) {
    if (ctx == null) return;
    _dict.add(uri); // 放入set变量中
    // 已有弹窗，则不再显示弹窗, dict.length >= 2 保证了有一个执行弹窗即可，
    if (loadingStatus == true || _dict.length >= 2) {
      return;
    }
    loadingStatus = true; // 修改状态
    // 请求前显示弹窗
    showDialog(
      context: ctx,
      barrierDismissible: false,
      builder: (context) {
        return LoadingIndicator();
      },
    );
  }

  static void complete(uri) {
    if (ctx == null) return;
    _dict.remove(uri);
    // 所有接口接口返回并有弹窗
    if (_dict.length == 0 && loadingStatus == true) {
      loadingStatus = false; // 修改状态
      // 完成后关闭loading窗口
      Navigator.of(ctx, rootNavigator: true).pop();
    }
  }
}
